package camadaIU;

import java.awt.Dimension;
import java.awt.Rectangle;
import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JLabel;
import javax.swing.JOptionPane;
import javax.swing.JPanel;
import javax.swing.JPasswordField;
import javax.swing.JTextField;

import camadaRN.RNUsuario;

public class IULogin extends JFrame {

	private static IULogin iuLogin = null;
	private JPanel conteudo = null;
	private JLabel rotuloNome = null;
	private JTextField nome = null;
	private JLabel rotuloSenha = null;
	private JPasswordField senha = null;
	private JLabel sponsor = null;
	private JLabel elite = null;
	private JLabel naoEsta = null;
	private JLabel clique = null;
	private JButton cadastrar = null;
	private JButton logar = null;
	private JButton verRegras = null;

	private RNUsuario rnUsuario;
	private IURegras iuRegras;
	private IUSala iuSala;
	private IUCadastro iuCadastro;

	private IULogin() {
		super();
		initialize();
		setRnUsuario(new RNUsuario("", ""));
		this.setVisible(true);
		this.setDefaultCloseOperation(JFrame.EXIT_ON_CLOSE);
	}

	public static IULogin getIULogin() {
		if (iuLogin == null)
			iuLogin = new IULogin();
		return iuLogin;
	}

	private void initialize() {
		this.setLocation(100, 10);
		this.setSize(new Dimension(800, 800));
		this.setContentPane(getJContentPane());
		this.setTitle("Elite Squad 1.0 - Login");
	}

	private JPanel getJContentPane() {
		if (conteudo == null) {

			setJLabelSenha(new JLabel());
			rotuloSenha.setBounds(new Rectangle(180, 220, 50, 30));
			rotuloSenha.setText("Senha:");

			setJLabelNome(new JLabel());
			rotuloNome.setBounds(new Rectangle(180, 180, 50, 30));
			rotuloNome.setText("Usuario:");

			setJContentPane(new JPanel());
			conteudo.setLayout(null);

			elite = new JLabel(new ImageIcon(getClass().getResource("/Gifs/elitesquad.JPG")));
			elite.setBounds(250, 30, 210, 111);
			conteudo.add(elite, null);

			naoEsta = new JLabel("Nao esta cadastrado? Cadastre-se agora!");
			naoEsta.setBounds(200, 330, 240, 30);
			conteudo.add(naoEsta, null);

			clique = new JLabel("Clique                       para conhecer as regras do jogo.");
			clique.setBounds(200, 380, 300, 30);
			conteudo.add(clique, null);

			
			sponsor = new JLabel(new ImageIcon(getClass().getResource("/Gifs/sponsors.GIF")));
			sponsor.setBounds(50, 440, 683, 249);
			conteudo.add(sponsor, null);

			conteudo.add(rotuloNome, null);
			conteudo.add(getJTextFieldNome(), null);
			conteudo.add(rotuloSenha, null);
			conteudo.add(getJPasswordSenha(), null);
			conteudo.add(getJButtonCadastrar(), null);
			conteudo.add(getJButtonLogar(), null);
			conteudo.add(getJButtonRegras(), null);
		}
		return conteudo;
	}

	private JTextField getJTextFieldNome() {
		if (nome == null) {
			setJTextFieldNome(new JTextField());
			nome.setBounds(new Rectangle(250, 180, 250, 30));
			nome.setToolTipText("Digite o seu nome de usuario");
		}
		return nome;
	}

	private JPasswordField getJPasswordSenha() {
		if (senha == null) {
			senha = new JPasswordField();
			senha.setBounds(new Rectangle(250, 220, 250, 30));
			senha.setToolTipText("Digite a sua senha");
		}
		return senha;
	}

	private JButton getJButtonCadastrar() {
		if (cadastrar == null) {
			setJButtonCadastrar(new JButton());
			cadastrar.setBounds(450, 330, 104, 30);
			cadastrar.setText("Cadastre-se");
			cadastrar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					direcionaCadastro();
				}
			});
		}
		return cadastrar;
	}

	private JButton getJButtonLogar() {
		if (logar == null) {
			setJButtonLogar(new JButton());
			logar.setBounds(new Rectangle(250, 270, 80, 30));
			logar.setText("Logar");
			logar.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					logarUsuario();
				}
			});
		}
		return logar;
	}

	private JButton getJButtonRegras() {
		if (verRegras == null) {
			setJButtonRegras(new JButton());
			verRegras.setBounds(new Rectangle(240, 380, 60, 30));
			verRegras.setText("Aqui");
			verRegras.addActionListener(new java.awt.event.ActionListener() {
				public void actionPerformed(java.awt.event.ActionEvent e) {
					direcionaRegrasJogo();
				}
			});
		}
		return verRegras;
	}

	//METODOS DE LOGICA
	
	private void logarUsuario() {

		rnUsuario.setNome(nome.getText());
		rnUsuario.setSenha(senha.getText());

		if (rnUsuario.logarUsuario())
			direcionaSalaJogos();
		else
			JOptionPane.showMessageDialog(null, "Dados Invalidos");
	}

	private void direcionaSalaJogos() {
		this.setIuSala(IUSala.getIUSala());
		IUSala.getIUSala().setUsuario(rnUsuario);
		IUSala.getIUSala().pedirParaAtualizarLista();
		dispose();
	}

	private void direcionaCadastro() {
		setIuCadastro(new IUCadastro());
		dispose();
	}

	private void direcionaRegrasJogo() {
		setIuRegras(new IURegras());
		dispose();
	}

	// GETTERS E SETTERS

	public JLabel getJLabelNome() {
		return rotuloNome;
	}
	public void setJLabelNome(JLabel labelNome) {
		rotuloNome = labelNome;
	}
	public JLabel getJLabelSenha() {
		return rotuloSenha;
	}
	public void setJLabelSenha(JLabel labelSenha) {
		rotuloSenha = labelSenha;
	}
	public RNUsuario getRnUsuario() {
		return rnUsuario;
	}
	public void setRnUsuario(RNUsuario rnUsuario) {
		this.rnUsuario = rnUsuario;
	}
	public IURegras getIuRegras() {
		return iuRegras;
	}
	public void setIuRegras(IURegras iuRegras) {
		this.iuRegras = iuRegras;
	}
	public IUSala getIuSala() {
		return iuSala;
	}
	public void setIuSala(IUSala iuSala) {
		this.iuSala = iuSala;
	}
	public IUCadastro getIuCadastro() {
		return iuCadastro;
	}
	public void setIuCadastro(IUCadastro iuCadastro) {
		this.iuCadastro = iuCadastro;
	}
	public void setJContentPane(JPanel contentPane) {
		conteudo = contentPane;
	}
	public void setJTextFieldNome(JTextField textFieldNome) {
		nome = textFieldNome;
	}
	public void setJButtonCadastrar(JButton buttonCadastrar) {
		cadastrar = buttonCadastrar;
	}
	public void setJButtonLogar(JButton buttonLogar) {
		logar = buttonLogar;
	}
	public void setJButtonRegras(JButton buttonRegras) {
		verRegras = buttonRegras;
	}
} 